var ACT = {
	codeEditor: undefined,
	init: function(){
		ACT.initClipboard();
	    ACT.initIdeWindow();
	    ACT.clearResult();
	},
	initClipboard: function(){
		var clipboard = new Clipboard('.copy');
		//优雅降级:safari 版本号>=10,提示复制成功;否则提示需在文字选中后，手动选择“拷贝”进行复制
	    clipboard.on('success', function(e) {
	        msg('复制成功!')
	        e.clearSelection();
	    });
	    clipboard.on('error', function(e) {
	    	msg('请选择“拷贝”进行复制!')
	    });
	},
	initIdeWindow: function(){
		ACT.codeEditor = CodeMirror.fromTextArea(document.getElementById("ideWindow"), {
			mode : "text/x-java",
			lineNumbers : true,
			matchBrackets : true,
			maxHighlightLength:$(".left-panel").height() 
		});
	},
	compress: function () {
		$("#jsonerror").hide();
    	$("#jsonerror").text("");
    	if(ACT.validate()){
		    var jsoncon = Parse.compress(ACT.codeEditor.getValue());
		    ACT.codeEditor.setValue(jsoncon);
    	}
	},
    beauty: function () {
    	$("#jsonerror").hide();
    	$("#jsonerror").text("");
    	if(ACT.validate()){
    		var code = ACT.codeEditor.getValue();
    		if (code.trim() !== '') {
	    		var jsoncon = JSON.stringify(JSON.parse(ACT.codeEditor.getValue()), '', 4)
	    		ACT.codeEditor.setValue(jsoncon);
    		}else{
    			ACT.codeEditor.setValue(code.trim());
    		}
    	}
    },
    validate: function () {
        try {
          var jsoncon = ACT.codeEditor.getValue();
          if (jsoncon.trim() === '') {
          
          } else {
              jsonlint.parse(jsoncon)
          }
        } catch (ex) {
        	$("#jsonerror").show(100);
        	$("#jsonerror").text(ex.message);
        	return false;
        }
        return true;
    },
	clear: function(){
		ACT.codeEditor.setValue("{}");
		$("#secretkey").val("");
		ACT.clearResult();
	},
	clearIdeWindow: function(){
		ACT.codeEditor.setValue("{}");
		ACT.clearResult();
	},
	clearResult: function(){
		$("#sortResult").val("");
		$("input[name='access-token']").val("");
		$("#jsonerror").hide();
    	$("#jsonerror").text("");
    	$(".copy").addClass("disabled");
	},
	generate: function(){
		ACT.clearResult();
		if(!ACT.validate()){
			return;
		}
    	var jsonParams = ACT.codeEditor.getValue();
    	var secretKey = $("#secretkey").val();
    	$.ajax({
			type: "POST",
			url: "generate",
			contentType: "application/json;charset=UTF-8",
		    data: JSON.stringify({
		    	"jsonParams":jsonParams,
		    	"secretKey":secretKey
			}),
		    success: function(r){
				if(r && r.success){
					$("#sortResult").val(r.data.sortJson);
				  	$("input[name='access-token']").val(r.data.md5Json);
				  	$(".copy").removeClass("disabled");
				}else{
				  	$(".copy").addClass("disabled");
					if(r.data.error){
						alert(r.data.error);
					}else if(r.data){
						alert(r.data);
					}else{
						alert(r.msg);
					}
				}
			}
		});
	}
}

$(function(){
	ACT.init();
});